1. Field of the Invention
This invention relates to computer systems and, more particularly, to file-based storage systems.
2. Description of the Related Art
Computer systems often process large quantities of information, including application data and executable code configured to process such data. In numerous embodiments, computer systems provide various types of mass storage devices configured to store data, such as magnetic and optical disk drives, tape drives, etc. To provide a regular and systematic interface through which to access their stored data, such storage devices are frequently organized into hierarchies of files by software such as an operating system. Often a file defines a minimum level of data granularity that a user can manipulate within a storage device, although various applications and operating system processes may operate on data within a file at a lower level of granularity than the entire file.
During the course of system operation, files may be created, manipulated and deleted, and the data stored in files may be read and/or modified. In conventional storage systems, applications may receive information about various events that transpire with respect to files or their content through a request-response interface. In typical request-response interfaces, a requesting application may convey a request to an information source, such as through a function call that may pass through a network (if the requesting application executes on a system that is remote to the information source). The requesting application may then wait for a response including the requested information, during which time the application may not perform any other tasks (i.e., the request may be a blocking call).
The request-response model has several disadvantages, however. Blocking requests may cause the application to stall for lengthy periods if the information source is busy or if the communication path to the source is slow or congested, decreasing application performance. In the worst case, deadlock or undesirable side effects may occur if a request or response is lost in transit or if either the requestor or the responding source becomes unavailable during the transaction. Additionally, the request-response model generally requires that each requesting application make a request even if the desired information is not available, and may require that the requesting application cull through irrelevant information to find information of interest, both of which increase processing overhead.